#include <stdio.h>

// constructor属性的函数将会在so加载完成前执行, 但不会保存到.init段中
void __attribute__((constructor(101))) InitFunc101()
{
    printf("%s\n", __FUNCTION__);
}

void __attribute__((constructor(102))) InitFunc102()
{
    printf("%s\n", __FUNCTION__);
}

// destructor属性的函数将会在so卸载完成前执行, 但不会保存到.fini段中
void __attribute__((destructor(101))) FiniFunc101()
{
    printf("%s\n", __FUNCTION__);
}

void __attribute__((destructor(102))) FiniFunc102()
{
    printf("%s\n", __FUNCTION__);
}

void Foo()
{
    printf("%s\n", __FUNCTION__);
}
